package zxs.sino.elite.hub.utils;

import java.text.DecimalFormat;
import java.util.HashMap;

/**
 * 通用工具类，整合MapUtils及其他通用功能
 *
 * @author zhang
 */
public class CommonUtil {
    
    /**
     * 创建支持链式调用的Map
     */
    public static <K, V> ChainMap<K, V> newChainMap() {
        return new ChainMap<>();
    }

    /**
     * 支持链式调用的Map实现
     */
    public static class ChainMap<K, V> extends HashMap<K, V> {
        
        /**
         * 链式调用的put方法
         */
        public ChainMap<K, V> putChain(K key, V value) {
            super.put(key, value);
            return this;
        }
    }
    
    /**
     * 安全地获取对象，避免空指针异常
     * @param obj 可能为null的对象
     * @param defaultValue 默认值
     * @return 如果对象不为null则返回对象，否则返回默认值
     */
    public static <T> T safeGet(T obj, T defaultValue) {
        return obj != null ? obj : defaultValue;
    }
    
    /**
     * 检查字符串是否为空
     */
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }
    
    /**
     * 检查字符串是否不为空
     */
    public static boolean isNotEmpty(String str) {
        return !isEmpty(str);
    }
    
    /**
     * 首字母大写
     */
    public static String capitalizeFirstLetter(String str) {
        if (isEmpty(str)) {
            return str;
        }
        return str.substring(0, 1).toUpperCase() + str.substring(1);
    }

    /**
     * 实现追加千位符号
     */
    public static String formatWithComma(long number) {
        DecimalFormat df = new DecimalFormat("#,###");
        return df.format(number);
    }
}